﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using System.IO;

namespace MikroMagazaObject
{
    public partial class frmKasiyer : XtraForm
    {
        public string PosgenelPath { get; set; }
        public string PoskonPath { get; set; }
        List<Kasiyer> _kasiyerler = new List<Kasiyer>();
        public string KasaSayisi { get; set; }

        public frmKasiyer()
        {
            InitializeComponent();
        }

        private void frmKasiyer_Load(object sender, EventArgs e)
        {
            if (File.Exists(PosgenelPath + "\\KASIYER.DAT"))
            {
                using (StreamReader sr = new StreamReader(PosgenelPath + "\\KASIYER.DAT", System.Text.Encoding.GetEncoding("ibm857")))
                {
                    string line = "";
                    while (sr.Peek() > -1)
                    {
                        line = sr.ReadLine();
                        _kasiyerler.Add(new Kasiyer()
                        {
                            Kodu = line.Mid(1, 4),
                            Adi = line.Mid(5, 20),
                            Sifresi = line.Mid(25, 6),
                            YetkiSeviyesi = line.Mid(31, 1)
                        });
                    }
                }
            }
            gridControl1.DataSource = _kasiyerler;
            gridView1.BestFitColumns();
        }

        private void gridControl1_Click(object sender, EventArgs e)
        {
            if (gridView1.FocusedRowHandle > -1)
            {
                Kasiyer kasiyer = gridView1.GetFocusedRow() as Kasiyer;
                if (kasiyer != null)
                {
                    txtKod.Text = kasiyer.Kodu;
                    txtAdi.Text = kasiyer.Adi;
                    txtSifre.Text = kasiyer.Sifresi;
                    cmbYetki.Text = kasiyer.YetkiSeviyesi;
                }
            }
        }

        private void simpleButton3_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Silmek istediğinize eminmisiniz ?", "Uyarı", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                if (gridView1.FocusedRowHandle > -1)
                {
                    Kasiyer kasiyer = gridView1.GetFocusedRow() as Kasiyer;
                    if (kasiyer != null)
                    {
                        _kasiyerler.Remove(kasiyer);
                        gridControl1.RefreshDataSource();
                        gridView1.BestFitColumns();
                    }
                }
            }
        }

        private void simpleButton2_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(txtKod.Text) && !string.IsNullOrEmpty(txtAdi.Text) && !string.IsNullOrEmpty(txtSifre.Text) && cmbYetki.SelectedIndex > -1)
            {
                if (!_kasiyerler.Exists(x => x.Kodu == int.Parse(txtKod.Text).ToString("0000")))
                {
                    _kasiyerler.Add(new Kasiyer()
                    {
                        Kodu = txtKod.Text,
                        Adi = txtAdi.Text,
                        Sifresi = txtSifre.Text,
                        YetkiSeviyesi = cmbYetki.Text
                    });
                }
                else
                {
                    Kasiyer kasiyer = _kasiyerler.Where(x => x.Kodu == int.Parse(txtKod.Text).ToString("0000")).FirstOrDefault();
                    if (kasiyer != null)
                    {
                        kasiyer.Adi = txtAdi.Text;
                        kasiyer.Sifresi = txtSifre.Text;
                        kasiyer.YetkiSeviyesi = cmbYetki.Text;
                    }
                }
                MessageBox.Show("İşlem Tamamlandı !");
                gridControl1.RefreshDataSource();
                gridView1.BestFitColumns();
            }
            else
            {
                MessageBox.Show("Lütfen tüm bilgileri eksiksiz girin !");
            }
        }

        private void simpleButton1_Click(object sender, EventArgs e)
        {
            using (StreamWriter sw = new StreamWriter(PosgenelPath + "\\KASIYER.DAT", false, System.Text.Encoding.GetEncoding("ibm857")))
            {
                foreach (Kasiyer item in _kasiyerler)
                {
                    sw.WriteLine("1{0}{1}{2}{3}", int.Parse(item.Kodu).ToString("0000"), item.Adi.Space(20 - item.Adi.Length), int.Parse(item.Sifresi).ToString("000000"), item.YetkiSeviyesi);
                }
                sw.Close();
            }

            foreach (string kasa in KasaSayisi.Split(','))
            {
                using (StreamWriter sw = new StreamWriter(PoskonPath + "\\MESAJ." + int.Parse(kasa).ToString("000"), false, System.Text.Encoding.GetEncoding("ibm857")))
                {
                    sw.WriteLine("109000000000000");
                    sw.Close();
                }
            }

            MessageBox.Show("Kasalara Gönderildi !");
        }
    }
}
